package com.ruoyi.performance.mapper;

import com.ruoyi.performance.domain.PerfCheck;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 绩效考核管理Mapper接口
 * 
 * @author ygx
 * @date 2020-08-31
 */
@Mapper
public interface PerfCheckMapper 
{
    /**
     * 查询绩效考核管理
     * 
     * @param perfcheckId 绩效考核管理ID
     * @return 绩效考核管理
     */
    public List<PerfCheck> selectPerfCheckById(Long perfcheckId);

    /**
     * 查询绩效考核管理列表
     * 
     * @param perfCheck 绩效考核管理
     * @return 绩效考核管理集合
     */
    public List<PerfCheck> selectPerfCheckList(PerfCheck perfCheck);
    
    /**
     * 根据考核单号查询计划考核天数
     * @param checkcode
     * @return
     */
    public int selectWorkDays(String checkcode);
    
    /**
     * 绩效考核管理列表(新版srm，拼接查询)
     * 
     * @param perfCheck 绩效考核管理
     * @return 绩效考核管理集合
     */
    public List<PerfCheck> selectResultList(PerfCheck perfCheck);

    /**
     * 查询绩效考核管理列表all(新版srm，拼接查询)
     * 
     * @param perfCheck 绩效考核管理
     * @return 绩效考核管理集合
     */
    public List<PerfCheck> selectResultListAll(PerfCheck perfCheck);
    
    /**
     * 新增绩效考核管理
     * 
     * @param perfCheck 绩效考核管理
     * @return 结果
     */
    public int insertPerfCheck(PerfCheck perfCheck);

    /**
     * 修改绩效考核管理
     * 
     * @param perfCheck 绩效考核管理
     * @return 结果
     */
    public int updatePerfCheck(PerfCheck perfCheck);
    
    /**
     * 修改绩效考核单状态
     * 
     * @param perfCheck 绩效考核管理
     * @return 结果
     */
    public int updatePerfStatus(PerfCheck perfCheck);
    
   /**
    * 责任人提交打分后，修改打分项状态
    * @param perfCheck
    * @return
    */
    public int updateResultStatus(PerfCheck perfCheck);
    
    /**
     * 新增时检查供应商同年同月同类型的唯一性
     * @param perfCheck(checkyear/checkmonth/checktype/vendorcode)
     * @return 冲突的考核单
     */
    public String checkUnique(PerfCheck perfCheck);

    
    /**
     * 发布前检查绑定模板的细项是否已经定义打分人
     * @param 考核单号
     * @return 未定义打分人的模板号及细项
     */
    public List<Map<String, String>> checkGroupDitem(String checkcode);
    
    
    /**
     * 删除绩效考核管理
     * 
     * @param perfcheckId 绩效考核管理ID
     * @return 结果
     */
    public int deletePerfCheckById(Long perfcheckId);

    /**
     * 批量删除绩效考核管理
     * 
     * @param perfcheckIds 需要删除的数据ID
     * @return 结果
     */
    public int deletePerfCheckByIds(String[] perfcheckIds);
    
    /**
     * @param companycode 通过公司code获取公司简称
     * @return factory_type
     */
    public String selectFactoryType(String companycode);
    
    /**
     * 根据id获取考核单状态
     * @param perfcheckId
     * @return
     */
    public String  selectStatusById(Long perfcheckId);
    
    /**
     * 根据id获取考核单号
     * @param perfcheckId
     * @return
     */
    public String  selectCodeById(Long perfcheckId);
    
   
}
